
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <poll.h>
#include <signal.h>

static int fd;




float bytes_to_float(char integer_byte, char fractional_byte) 
{
    // 整数部分直接转换为整型
    float integer_part = (float)integer_byte;
    
    // 小数部分映射到 [0, 1) 区间
    float fractional_part = (float)fractional_byte / 256.0f;
    
    // 合并为浮点数
    return integer_part + fractional_part;
}




/*
 * ./button_test /dev/DHT11
 *
 */
int main(int argc, char **argv)
{
	int i;
	char buf[4];
	float temperature,humidity;
	
	/* 1. 判断参数 */
	if (argc != 2) 
	{
		printf("Usage: %s <dev>\n", argv[0]);
		return -1;
	}


	/* 2. 打开文件 */
	fd = open(argv[1], O_RDWR | O_NONBLOCK);
	if (fd == -1)
	{
		printf("can not open file %s\n", argv[1]);
		return -1;
	}

	printf("1");
	while(1)
	{
		if(read(fd, buf, 4) == 4)
		{
			humidity = bytes_to_float(buf[0],buf[1]);
			temperature = bytes_to_float(buf[2],buf[3]);
			printf("湿度:%f  \n湿度:%f\n",humidity,temperature);
		}
		else
		{
			printf("数据获取错误!\n");
		}
		sleep(2);
	}


	close(fd);
	
	return 0;
}

